import logging
import os
import sys
from pathlib import Path
from logging.handlers import RotatingFileHandler

# 日志目录配置
LOG_DIR = Path(__file__).parent / "logs"
LOG_DIR.mkdir(exist_ok=True)

def setup_logger(name="pdd_customer_sdk"):
    logger = logging.getLogger(name)
    if logger.handlers:  # 如果已有处理器，直接返回
        return logger

    # 创建日志格式
    formatter = logging.Formatter(
        '[%(asctime)s] %(levelname)s @ %(name)s:%(lineno)d - %(message)s',
        datefmt='%Y-%m-%d %H:%M:%S'
    )

    # 配置控制台输出
    console_handler = logging.StreamHandler(sys.stdout)
    console_handler.setFormatter(formatter)
    console_handler.set_name("console_handler")  # 为处理器命名

    # 配置滚动文件日志（每个文件10MB，保留3个备份）
    file_handler = RotatingFileHandler(
        LOG_DIR / "app.log",
        maxBytes=10*1024*1024,
        backupCount=3,
        encoding="utf-8"
    )
    file_handler.setFormatter(formatter)
    file_handler.set_name("file_handler")  # 为处理器命名

    # 设置日志级别
    logger.setLevel(logging.DEBUG if os.getenv("DEBUG", "false").lower() == "true" else logging.INFO)

    # 避免重复添加处理器
    if not any(handler.get_name() == "console_handler" for handler in logger.handlers):
        logger.addHandler(console_handler)

    if not any(handler.get_name() == "file_handler" for handler in logger.handlers):
        logger.addHandler(file_handler)

    return logger
